<?

/*! Usuario do sistema
/*!
    Esta classe representa um usuario no sistema.
*/
class Usuario
{

    //! Verifica se o usuario e valido
    /*!
        Checa se um determinado usuario, com senha, � v�lido, para poder permitir
        acesso ao sistema. A funcao de criptografia usada e crypt.
        \param $login Nome de usuario
        \param $senha Senha do usuario em modo texto plano sem criptografia
        \return Boolean
    */
    function validar($login, $senha)
    {
        $registros = array();
        $con = DB::connect(URL_CONEXAO);
        $sql = "";

        if ($login != "") {
            $sql .= " dsc_login='" . $login . "' and";
        } else {
            return 0;
        }

        if ($senha != "") {
            $sql .= " dsc_senha='" . crypt($senha, $login) . "'";
            // $sql .= " dsc_senha='" . $senha . "'";  // sem criptografia
        } else {
            return 0;
		}

        $resultado =& $con->query("select * from Usuario where $sql");

        if (DB::isError($resultado)) {
            die($resultado->getMessage());
        }
        return $resultado->numRows() > 0;
    }

    //! Consulta todos os usuarios cadastrados
    /*!
        Pega todos os usuarios cadastrados no banco.
        \return Lista de objetos
    */
    function consultarTodos()
    {
        $registros = array();
        $con = DB::connect(URL_CONEXAO);

        $resultado = $con->query("Select * from Usuario");

        while ($linha = $resultado->fetchRow(DB_FETCHMODE_OBJECT)) {
            array_push($registros, $linha);
        }
        return $registros;
    }

    //! Consulta com base em criterios
    /*!
        Efetua uma consulta por usuarios com base em alguns critérios.
        \param $nome Nome do usuario
        \param $login Nome de usuario no sistema
		\param $tipo_acesso Tipo de acesso do usuário
        \return Lista de objetos
    */
    function consultar($nome, $login, $tipo_acesso)
    {
        $registros = array();
        $con = DB::connect(URL_CONEXAO);
        $sql = "";

 
        if ($nome != "")
            $sql .= " nom_usuario like '%" . $nome . "%' and";

        if ($login != "")
            $sql .= " dsc_login like '%" . $login . "%' and";
        
        if ($tipo_acesso != "")
            $sql .= " tpo_acesso like '%" . $tipo_acesso . "%' and";            

        if ($sql != "")
            $sql = substr(" where " . $sql, 0, -3);

        $sql = "select * from Usuario" . $sql;

        $resultado = $con->query($sql);

        while ($linha = $resultado->fetchRow(DB_FETCHMODE_OBJECT)) {
            array_push($registros, $linha);
        }
        return $registros;
    }

    //! Consulta um usuario especifico
    /*!
        Pega do banco o usuario com o login dado.
        \param $login login do usuario
        \return Lista de objetos
    */
    function consultarUnico($login)
    {
        $registros = array();
        $con = DB::connect(URL_CONEXAO);
        $sql = "select * from Usuario where dsc_login = '" . $login . "'";

        $resultado = $con->query($sql);

        return $resultado->fetchRow(DB_FETCHMODE_OBJECT);
    }

    //! Cadastra um novo usuario
    /*!
        Cadastra um novo usuario no banco.
        \param $nome Nome do usuario
        \param $login Nome de usuario no sistema
        \param $senha Senha do usuario
		\param $tipo_acesso tipo de acesso do usuario
        \return Boolean
    */
    function incluir($nome, $login, $senha, $tipo_acesso)
    {
        $con = DB::connect(URL_CONEXAO);
        $sql = "insert into Usuario (nom_usuario, dsc_login,dsc_senha,tpo_acesso) " .
            " values ('$nome', '$login', '" . crypt($senha, $login) . "', '$tipo_acesso')";

        $flag = $con->query($sql);

        if (DB::isError($flag)) {
            return false;
        }
        return true;
    }

    //! Exclui um usuario do banco
    /*!
        Elimina um usuario do banco em definitivo
        \param $login login do usuario
        \return Boolean
    */
    function excluir($login)
    {
        $con = DB::connect(URL_CONEXAO);
        $sql = "delete from Usuario where dsc_login = '" . $login . "'";

        $flag = $con->query($sql);

        if (DB::isError($flag)) {
            return false;
        }
        return true;
    }

    //! Altera um usuario
    /*!
        Atualiza um usuario no banco com novos valores
        \param $nome Nome do usuario
        \param $login Nome de usuario, para entrar no sistema
        \param $senha Senha do usuario, para entrar no sistema
		\param $tipo_acesso tipo de acesso do Usuario no sistema
        \return Boolean
    */
    function alterar($nome, $login, $senha , $tipo_acesso)
    {
        $con = DB::connect(URL_CONEXAO);
        $sql = "Update Usuario set nom_usuario = '$nome', tpo_acesso = '" . $tipo_acesso .  "'" ;

        $sql .= ($senha != "") ? ", dsc_senha = '" . crypt($senha, $login) . "'" : "";

        $sql .= " where dsc_login = '" . $login . "'";
        
        $resultado = $con->query($sql);

        if (DB::isError($flag)) {
            return false;
        }
        return true;
    }

}

?>
